A personal computer system typically includes a system unit having a central processing unit (CPU) and associated memory, and a storage device such as a hard disk, floppy disk or CD ROM. Also included are an input device, such as a keyboard or mouse, a display device, and possibly other peripherals as well. Many computer systems today include multiple CPUs mounted on what is commonly referred to as a motherboard, wherein each of these CPUs contain code known as the system BIOS (“Basic Input/Output System”). The system BIOS is responsible for testing system hardware and starting the operating system during the booting process. The BIOS also contains data and instructions that enables the transfer of data to and from the system hardware. The system BIOS is stored in system memory, typically in non-volatile memory such as read-only memory (ROM) or flash memory.
Before computer systems are sold, the BIOS must be “debugged,” or tested to ensure that it is working properly, and if it is not then to ensure that any existing errors are detected land corrected. The motherboard of the computer typically includes a debug port provided for this purpose. A computer system having debugging software is connected to the motherboard via the debug port. The debug port is connected to each of the CPU sockets serially so that signals and data flow serially from the debugging computer through the debug port, and then through each successive CPU before returning to the debugging computer through the debug port.
Problems arise during debugging when one of the positions or slots on a motherboard designed to carry multiple CPUs is not occupied by a CPU. In some multiprocessor systems, an empty CPU slot must always be occupied to ensure proper termination of the line or bus during normal operation of the computer. Separate terminator cards are inserted into the unoccupied CPU slots for this purpose. These terminator cards perform required termination functions, and also, during debugging procedures, function to ensure that the signal is passed through to a subsequent CPU so as to properly complete the serial debugging circuit. An unoccupied CPU slot will otherwise cause a break in the debugging circuit, preventing altogether debugging of any CPU. Insertion of separate terminator cards in unoccupied slots is disadvantageous in that these separate terminator cards are expensive, and must be manually inserted during manufacturing.
Some more recent multiprocessor systems do not need separate terminator cards to perform termination. These systems have termination capabilities built into the CPU that ensure termination. For purposes of debugging, however, empty CPU slots still must be bypassed to complete the debugging circuit path. For these types of systems, the only known method by which to bypass unpopulated CPU slots for debugging purposes is to insert a jumper between successive CPUs, and to manually adjust the jumper when undergoing debugging versus normal operation. Jumpers that require physical manipulation prior to debugging are both labor intensive and time consuming. Further, because of space constraints it is becoming increasingly difficult to fit such jumpers between or in close proximity to the CPUs, as is required.
Accordingly, what is needed is an improved system and method for debugging multiprocessor systems that may have unoccupied CPU slots.